package com.caltco.cargo.ops.auth.service;


import cn.hutool.json.JSONObject;
import com.caltco.cargo.ops.auth.bo.AdminUserDetails;
import com.caltco.cargo.ops.auth.entity.UserEntity;
import com.caltco.cargo.ops.common.utils.PageUtils;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;


/**
 * 系统用户
 *
 * @author
 * @email
 * @date 2016年9月18日 上午9:43:39
 */
public interface UserService {


    /**
     * @Description: 通过Redis，根据toknen信息查询用户
     * @Param: [token] 根据JWT生成的Token
     * @return: org.springframework.security.core.userdetails.UserDetails
     * @Author: yehao
     * @Date: 2022/7/21
     */
    AdminUserDetails loadUserByUsernameRedis(String token);

    /**
    * @Description: 通过redis查询当前用户信息
    * @Param: [request]
    * @return: com.caltco.cargo.ops.auth.entity.UserEntity
    * @Author: yehao
    * @Date: 2022/7/28
    */
    UserEntity getCurUserInfoByRedis(HttpServletRequest request);
    /**
    * @Description: 查询当前用户Token
    * @Param: [request]
    * @return: java.lang.String
    * @Author: yehao
    * @Date: 2022/7/28
    */
    String getToken(HttpServletRequest request);
    /**
    * @Description: 查询当前用户Id
    * @Param: [request]
    * @return: java.lang.String
    * @Author: yehao
    * @Date: 2022/7/29
    */
    Long getUserId(HttpServletRequest request);

    /**
     * @Description: 内部分页查询用户列表
     * @Param: [request]
     * @return: java.lang.String
     * @Author: yehao
     * @Date: 2022/7/29
     */
    PageUtils getUserListByPage(String authorization, JSONObject params);

    /**
     * @Description: 根据用户ID集合查询对应人员
     * @Param: [request]
     * @return: java.lang.String
     * @Author: yehao
     * @Date: 2022/7/29
     */
    List<UserEntity> getPersonalByUserIds(String authorization, JSONObject params);

    /**
     * @Description: 根据用户Id查询当前用户
     * @Param: [request]
     * @return: com.caltco.cargo.ops.auth.entity.UserEntity
     * @Author: yehao
     * @Date: 2022/7/28
     */
    UserEntity getUserInfoById(String authorization, JSONObject params);

    /**
     * @Description: 根据角色Id集合查询对应用户
     * @Param: [request]
     * @return: com.caltco.cargo.ops.auth.entity.UserEntity
     * @Author: yehao
     * @Date: 2022/7/28
     */
    List<UserEntity> getUserInfoByRoleIds(String authorization, JSONObject params);
}

